package com.wicket.okrframework.web.contorller;

import com.github.pagehelper.Page;
import com.wicket.okrframework.biz.service.RoleService;
import com.wicket.okrframework.biz.service.dto.req.*;
import com.wicket.okrframework.biz.service.dto.res.*;
import com.wicket.okrframework.common.ro.OkrResult;
import com.wicket.okrframework.common.util.CommonFunctionHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@RestController
@RequestMapping("/base/role/")
public class RoleController {

    @Autowired
    RoleService roleService;

    /**
   * D1-2查询角色导航列表
   */
    @PostMapping("queryRoleMenuList")
    public OkrResult<QueryRoleMenuListRespDto> queryRoleMenuList(@RequestBody @Validated QueryRoleMenuListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryRoleMenuListRespDto retData = roleService.queryRoleMenuList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-2查询角色列表
   */
    @PostMapping("queryRoleList")
    public OkrResult<QueryRoleListRespDto> queryRoleList(@RequestBody @Validated QueryRoleListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryRoleListRespDto retData = roleService.queryRoleList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-2新增角色
   */
    @PostMapping("addRole")
    public OkrResult<AddRoleRespDto> addRole(@RequestBody @Validated AddRoleReqDto reqDTO){
    return OkrResult.success(roleService.addRole(reqDTO));
    }

    /**
   * D1-2查询角色详情
   */
    @PostMapping("queryRoleDetail")
    public OkrResult<QueryRoleDetailRespDto> queryRoleDetail(@RequestBody @Validated QueryRoleDetailReqDto reqDTO){
    return OkrResult.success(roleService.queryRoleDetail(reqDTO));
    }

    /**
   * D1-2修改自定义角色
   */
    @PostMapping("updateCustomRole")
    public OkrResult<UpdateCustomRoleRespDto> updateCustomRole(@RequestBody @Validated UpdateCustomRoleReqDto reqDTO){
    return OkrResult.success(roleService.updateCustomRole(reqDTO));
    }

    /**
   * D1-2修改角色
   */
    @PostMapping("updateRole")
    public OkrResult<UpdateRoleRespDto> updateRole(@RequestBody @Validated UpdateRoleReqDto reqDTO){
    return OkrResult.success(roleService.updateRole(reqDTO));
    }

    /**
   * D1-2存档角色
   */
    @PostMapping("archiveRole")
    public OkrResult<ArchiveRoleRespDto> archiveRole(@RequestBody @Validated ArchiveRoleReqDto reqDTO){
    return OkrResult.success(roleService.archiveRole(reqDTO));
    }

    /**
   * D1-2存档自定义角色
   */
    @PostMapping("archiveCustomRole")
    public OkrResult<ArchiveCustomRoleRespDto> archiveCustomRole(@RequestBody @Validated ArchiveCustomRoleReqDto reqDTO){
    return OkrResult.success(roleService.archiveCustomRole(reqDTO));
    }
/**
   * D1-2查询角色列表ByCodes(公共)
   */
    @PostMapping("batchQueryRoleListByCodesCom")
    public OkrResult<BatchQueryRoleListByCodesComRespDto> batchQueryRoleListByCodesCom(@RequestBody @Validated BatchQueryRoleListByCodesComReqDto reqDTO){
    return OkrResult.success(roleService.batchQueryRoleListByCodesCom(reqDTO));
    }
/**
   * D1-查询角色详情(公共)
   */
    @PostMapping("queryRoleDetailCom")
    public OkrResult<QueryRoleDetailComRespDto> queryRoleDetailCom(@RequestBody @Validated QueryRoleDetailComReqDto reqDTO){
    return OkrResult.success(roleService.queryRoleDetailCom(reqDTO));
    }
/**
   * D1查询用于权限角色列表(公共)
   */
    @PostMapping("queryRoleOfPowerListCom")
    public OkrResult<QueryRoleOfPowerListComRespDto> queryRoleOfPowerListCom(@RequestBody @Validated QueryRoleOfPowerListComReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryRoleOfPowerListComRespDto retData = roleService.queryRoleOfPowerListCom(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }
/**
   * D1-2查询角色推荐到业务场景列表
   */
    @PostMapping("queryRoleRecommendBizSceneList")
    public OkrResult<QueryRoleRecommendBizSceneListRespDto> queryRoleRecommendBizSceneList(@RequestBody @Validated QueryRoleRecommendBizSceneListReqDto reqDTO){
    return OkrResult.success(roleService.queryRoleRecommendBizSceneList(reqDTO));
    }
/**
   * D1-2新增角色推荐到业务场景
   */
    @PostMapping("addRoleRecommendBizScene")
    public OkrResult<AddRoleRecommendBizSceneRespDto> addRoleRecommendBizScene(@RequestBody @Validated AddRoleRecommendBizSceneReqDto reqDTO){
    return OkrResult.success(roleService.addRoleRecommendBizScene(reqDTO));
    }
/**
   * D1-2查询角色推荐列表
   */
    @PostMapping("queryRoleRecommendList")
    public OkrResult<QueryRoleRecommendListRespDto> queryRoleRecommendList(@RequestBody @Validated QueryRoleRecommendListReqDto reqDTO){
    return OkrResult.success(roleService.queryRoleRecommendList(reqDTO));
    }
/**
   * D1-2删除角色推荐到业务场景
   */
    @PostMapping("deleteRoleRecommendBizScene")
    public OkrResult<DeleteRoleRecommendBizSceneRespDto> deleteRoleRecommendBizScene(@RequestBody @Validated DeleteRoleRecommendBizSceneReqDto reqDTO){
    return OkrResult.success(roleService.deleteRoleRecommendBizScene(reqDTO));
    }
/**
   * D1-2发布角色推荐到业务场景
   */
    @PostMapping("releaseRoleRecommendBizScene")
    public OkrResult<ReleaseRoleRecommendBizSceneRespDto> releaseRoleRecommendBizScene(@RequestBody @Validated ReleaseRoleRecommendBizSceneReqDto reqDTO){
    return OkrResult.success(roleService.releaseRoleRecommendBizScene(reqDTO));
    }
/**
   * D1-2查询角色未推荐业务场景列表
   */
    @PostMapping("queryRoleNoRecommendBizSceneList")
    public OkrResult<QueryRoleNoRecommendBizSceneListRespDto> queryRoleNoRecommendBizSceneList(@RequestBody @Validated QueryRoleNoRecommendBizSceneListReqDto reqDTO){
    return OkrResult.success(roleService.queryRoleNoRecommendBizSceneList(reqDTO));
    }
/**
   * D1-2存档角色推荐到业务场景
   */
    @PostMapping("archiveRoleRecommendBizScene")
    public OkrResult<ArchiveRoleRecommendBizSceneRespDto> archiveRoleRecommendBizScene(@RequestBody @Validated ArchiveRoleRecommendBizSceneReqDto reqDTO){
    return OkrResult.success(roleService.archiveRoleRecommendBizScene(reqDTO));
    }
/**
   * D1-2批量查询角色列表	
   */
    @PostMapping("batchQueryRole")
    public OkrResult<BatchQueryRoleRespDto> batchQueryRole(@RequestBody @Validated BatchQueryRoleReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        BatchQueryRoleRespDto retData = roleService.batchQueryRole(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }
/**
   * D1查询空间管理员(公共)
   */
    @PostMapping("querySpaceManagerDetailCom")
    public OkrResult<QuerySpaceManagerDetailComRespDto> querySpaceManagerDetailCom(@RequestBody @Validated QuerySpaceManagerDetailComReqDto reqDTO){
    return OkrResult.success(roleService.querySpaceManagerDetailCom(reqDTO));
    }
/**
   * D1分析分管领导部门业务角色(公共)
   */
    @PostMapping("analysisMemberLeaderRoleCom")
    public OkrResult<AnalysisMemberLeaderRoleComRespDto> analysisMemberLeaderRoleCom(@RequestBody @Validated AnalysisMemberLeaderRoleComReqDto reqDTO){
    return OkrResult.success(roleService.analysisMemberLeaderRoleCom(reqDTO));
    }
}
